package game;
/*
 * It's a Top Down Scrolling Shooter
 * author Rex Ying
 * 
 * GamePanel: the panel that shows the main game, game mechanics included.
 * EnemyGenerator: implements runnable to spawn enemies/boss
 * Constants: stores most of the constants used in the game
 * FlyingObj: all kinds of missiles and enemies, as well as the player, are subclases of FlyingObj
 * 
 * --------------------------------------------------------------------------------
 * Main features are as below.
 * 
 * As more enemies are generated, they get stronger
 * (the possibility of spawning stronger enemies becomes larger)
 * 
 * boss appears when energy generated reaches NUMBER_OF_ENEMIES, which can be modified in game/Constants
 * when testing the boss, NUMBER_OF_ENEMIES could be set as a small number (such as 5)
 * 
 * HP: player initially has the hp of 3; enemies have different HPs depending on their types; player's MAX HP is 12;
 * Speed: initial speed is 2; the maximum speed is 10, and the minimum speed is 2
 * Drop: Currently there are two types of drops which may POSSIBLY appear after enemy is destroyed.
 * 		They increase HP or speed;
 * Missile Type: as HP increases, missiles are upgraded.
 * Score: get drops: score + 2; destroy enemies: score + enemies' HP 
 * Boss: 100HP, fires different types of weapons/enemies. The "apple" aims at where the player is currently at
 * Slower: a special type of enemy that drops webs. If hit by web, player's HP will NOT decrease, but SPEED is decreased.
 * AND MANY MORE ......
 * 
 * --------------------------------------------------------------------------------
 * Cheat Keys:
 * Ctrl+a: +3 HP
 * Ctrl+b: +1 speed
 * Ctrl+c: -1 speed
 */

import javax.swing.JFrame;

public class Shooter extends JFrame implements Constants 
{
    public Shooter()
    {        
        GamePanel GPanel= new GamePanel(this);
        add(GPanel);
        setTitle("Shooter");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(GAME_WIDTH, GAME_HEIGHT);
        setLocationRelativeTo(null);
        setVisible(true);
        setResizable(false);
    }
    
    public static void main(String[] args) {
        new Shooter();
    }
}